package com.cxd.base.util;

import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang.StringUtils;

/**
 * <一句话功能简述> <功能详细描述>
 * 
 * @author wtj
 * @date 2015年12月17日 下午3:27:12
 * @company CXD
 * @version [Copyright (c) 2015 V001]
 */
public class PatternUtil {

    private static final String regEx_script = "<script[^>]*?>[\\s\\S]*?<\\/script>"; // 定义script的正则表达式  
    private static final String regEx_style = "<style[^>]*?>[\\s\\S]*?<\\/style>"; // 定义style的正则表达式  
    private static final String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式  
    private static final String regEx_space = "\\s*|\t|\r|\n";//定义空格回车换行符  
    
	/**
	 * 获取字符串中所有img标签
	 * 
	 * @author wtj
	 * @date 2015年12月17日下午3:32:21
	 * @param htmlStr
	 * @return
	 */
	public static List<String> getImgLable(String htmlStr) {
		List<String> listStr = new ArrayList<String>();
		Pattern p = Pattern
				.compile("<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>");// <img[^<>]*src=[\'\"]([0-9A-Za-z.\\/]*)[\'\"].(.*?)>");
		Matcher m = p.matcher(htmlStr);
		while (m.find()) {
			listStr.add(m.group());
		}
		return listStr;
	}

	/**
	 * 获取img src 标签
	 * @author wtj
	 * @date 2015年12月17日下午3:57:52
	 * @param htmlStr
	 * @return
	 */
	public static List<String> getImgSrcLable(String htmlStr) {
		List<String> listStr = new ArrayList<String>();
		Pattern p = Pattern.compile("<img[^>]+src\\s*=\\s*['\"]([^'\"]+)['\"][^>]*>");// <img[^<>]*src=[\'\"]([0-9A-Za-z.\\/]*)[\'\"].(.*?)>");
		Matcher m = p.matcher(htmlStr);
		while (m.find()) {
			Matcher ms = Pattern.compile("src\\s*=\\s*\"?(.*?)(\"|>|\\s+)").matcher(m.group());
			while (ms.find()) {
				listStr.add(ms.group());
			}
		}
		return listStr;
	}

	/**
	 * 获取img scr 下url
	 * <一句话功能简述> <功能详细描述>
	 * @author wtj
	 * @date 2015年12月17日下午3:56:15
	 * @param htmlCode
	 * @return
	 */
	public static List<String> getImaSrcUrl(String htmlCode) {
	    List<String> imageSrcList = new ArrayList<String>();
	    // Pattern p = Pattern.compile("<img\\b[^>]*\\bsrc\\b\\s*=\\s*('|\")?([^'\"\n\r\f>]+(\\.jpg|\\.bmp|\\.eps|\\.gif|\\.mif|\\.miff|\\.png|\\.tif|\\.tiff|\\.svg|\\.wmf|\\.jpe|\\.jpeg|\\.dib|\\.ico|\\.tga|\\.cut|\\.pic)\\b)[^>]*>", Pattern.CASE_INSENSITIVE);
	    Pattern p = Pattern.compile("<img\\b[^>]*\\bsrc\\b\\s*=\\s*('|\")?([^'\"\n\r\f>]+\\b)[^>]*>", Pattern.CASE_INSENSITIVE);
	    Matcher m = p.matcher(htmlCode);
	    String quote = null;
	    String src = null;
	    while (m.find()) {
	        quote = m.group();
	        src = (quote == null || quote.trim().length() == 0) ? m.group(2).split("\\s+")[0] : m.group(2);
	        if(StringUtils.isBlank(src)){
	        	continue;
	        }
	        imageSrcList.add(src);
	    }
	    return imageSrcList;
	}
	
    /** 
     * @param htmlStr 
     * @return 
     *  删除Html标签 
     */  
    public static String delHTMLTag(String htmlStr) {  
        Pattern p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE);  
        Matcher m_script = p_script.matcher(htmlStr);  
        htmlStr = m_script.replaceAll(""); // 过滤script标签  
  
        Pattern p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE);  
        Matcher m_style = p_style.matcher(htmlStr);  
        htmlStr = m_style.replaceAll(""); // 过滤style标签  
  
        Pattern p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);  
        Matcher m_html = p_html.matcher(htmlStr);  
        htmlStr = m_html.replaceAll(""); // 过滤html标签  
  
        Pattern p_space = Pattern.compile(regEx_space, Pattern.CASE_INSENSITIVE);  
        Matcher m_space = p_space.matcher(htmlStr);  
        htmlStr = m_space.replaceAll(""); // 过滤空格回车标签  
        return htmlStr.trim(); // 返回文本字符串  
    }  
      
    public static String getTextFromHtml(String htmlStr){  
        htmlStr = delHTMLTag(htmlStr);  
        htmlStr = htmlStr.replaceAll("&nbsp;", "");  
//        htmlStr = htmlStr.substring(0, htmlStr.indexOf("。")+1);  
        return htmlStr;  
    }  
    
	public static void main(String[] arg) {
		String htmlStr = "<p>Image 1:<img width=\"199\" src=\"_image/12/label\" alt=\"\"/> Image 2: <img width=\"199\" src=\"_image/122/label\" alt=\"\"/><img width=\"199\" src=\"_image/123/label\" alt=\"\"/></p>";
		PatternUtil.getImaSrcUrl(htmlStr);
	}
}
